package com.ruoyi.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.admin.domain.entity.SchedulingModel;
import com.ruoyi.admin.domain.vo.request.scheduling.SchedulingAddRequest;
import com.ruoyi.admin.domain.vo.request.scheduling.SchedulingPageJoinRequest;
import com.ruoyi.admin.domain.vo.request.scheduling.SchedulingRequest;
import com.ruoyi.admin.domain.vo.response.scheduling.*;
import com.ruoyi.common.api.Result;

import java.util.List;

/**
 * 排单(Scheduling) Service接口
 *
 * @author jianhan
 * @date 2022-12-07 15:41:40
 */
public interface SchedulingService extends IService<SchedulingModel> {

    /**
     * 根据id获取单条数据信息
     *
     * @param schedulingId 排单id
     * @return 单条数据信息
     * @author jianhan
     * @date 2022-12-07 15:41:40
     **/
    Result<SchedulingPageJoinResponse> getId(Long schedulingId);

    /**
     * 分页获取列表
     *
     * @param page            分页信息
     * @param schedulingPageJoinRequest 查询条件
     * @return 单页数据
     * @author jianhan
     * @date 2022-12-07 15:41:40
     **/
    Result<SchedulingPageResponse> page(Page<SchedulingPageJoinRequest> page, SchedulingPageJoinRequest schedulingPageJoinRequest);

    /**
     * 添加排单
     *
     * @param schedulingAddRequest 排单信息
     * @return 添加结果
     * @author jianhan
     * @date 2022-12-07 15:41:40
     **/
    Result add(SchedulingAddRequest schedulingAddRequest);

    /**
     * 修改排单
     *
     * @param schedulingAddRequest 排单信息
     * @return 修改结果
     * @author jianhan
     * @date 2022-12-07 15:41:40
     **/
    Result update(SchedulingAddRequest schedulingAddRequest);

    /**
     * 修改排单状态
     *
     * @param schedulingRequest 排单信息
     * @return 修改结果
     * @author jianhan
     * @date 2022-01-31 15:24:40
     **/
    Result updateByStatus(SchedulingRequest schedulingRequest);

    /**
     * @description:  本月上月的毛利
     * @param:
     * @return: profitMonthResponse
     * @author: jianhan
     * @date: 2023/2/9 15:01
     **/
    Result<ProfitMonthResponse> getMonthGrossProfit();

    /**
     * @description: 采购与销售额
     * @param:
     * @return: salesQuotaResponse
     * @author: jianhan
     * @date: 2023/2/9 15:34
     **/
    Result<SalesQuotaResponse> getQuota();
    /**
     * 删除排单
     *
     * @param schedulingId 排单id
     * @return 删除结果
     * @author jianhan
     * @date 2022-12-07 15:41:40
     **/
    Result delete(Long schedulingId);

    Result<List<SupplierQuotaResponse>> getSupplierQuota();

    Result<List<HotListResponse>> getHotList();

    Result<PendingResponse> getPending();

    Result<List<DayTotalResponse>> getDayTotal();
}
